package com.lb.ai.common.request;

import lombok.Data;
import java.io.Serializable;
import java.util.UUID;

/**
 * 基础请求参数
 * 包含请求的基本信息，如时间戳、来源、追踪ID等
 * 所有的请求参数类都应该继承此类
 *
 * @author LiuB
 * @see BusinessRequest
 * @see PageRequest
 */
@Data
public class BaseRequest implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 请求时间戳
     * 记录请求发起的时间，自动生成，格式为毫秒级时间戳
     */
    private Long timestamp;

    /**
     * 请求来源
     * 标识请求的来源系统或客户端，如：web、android、ios等
     */
    private String source;

    /**
     * 请求追踪ID
     * 用于追踪和排查问题的唯一标识，自动生成
     * 格式为去除横线的UUID字符串
     */
    private String traceId;

    /**
     * 无参构造函数
     * 初始化时会自动设置时间戳和追踪ID
     */
    public BaseRequest() {
        this.timestamp = System.currentTimeMillis();
        this.traceId = UUID.randomUUID().toString().replace("-", "");
    }
} 